Original Note

2. Explore first, the plan, then implement - Read

1. Always provide Claude a way to verify its work

Strategy Before After
Provide verification criteria ”implement a function that validates email addresses" "write a validateEmail function. example test cases: user@example.com is true, invalid is false, user@.com is false. run the tests after implementing”
Verify UI changes visually ”make the dashboard look better" "[paste screenshot] implement this design. take a screenshot of the result and compare it to the original. list differences and fix them”
Address root causes, not symptoms ”the build is failing" "the build fails with this error: [paste error]. fix it and verify the build succeeds. address the root cause, don’t suppress the error”

2. Explore first, the plan, then implement

1. Explore

Enter plan mode. Claude reads files and answers questions without making changes.

claude (plan mode)

read /src/auth and understand how we handle sessions and login.
also look at how we manage environment variables for secrets.

2. Plan

Ask Claude to create a detailed implementation plan.

claude (plan mode)

I want to add Google OAuth. What files need to change?
What's the session flow? Create a plan.

Press Ctrl+G to open the plan in your text editor for direct editing before Claude proceeds.

3. Implement

Switch out of plan mode and let Claude code, verifying against its plan.

claude (default mode)

implement the OAuth flow from your plan. write tests for the
callback handler, run the test suite and fix any failures.

4. Commit

Ask Claude to commit with a descriptive message and create a PR.

claude (default mode)

commit with a descriptive message and open a PR

Comments:

Plan mode is useful, but also adds overhead.For tasks where the scope is clear and the fix is small (like fixing a typo, adding a log line, or renaming a variable) ask Claude to do it directly.Planning is most useful when you’re uncertain about the approach, when the change modifies multiple files, or when you’re unfamiliar with the code being modified. If you could describe the diff in one sentence, skip the plan.

4. Subagent 高级实战工作流 (Advanced Workflows):

  • 批量微观重构与代码迁移(让小弟去“写”):面对将大量文件从 JS 翻写为 TS,或统一升级旧 API 响应格式等机械性体力活时,避免让主对话(老大)被巨量语法细节刷屏。 工作流:在 .claude/agents/transformer.md 中配置一个拥有 Read, Edit 权限的子代理,通过精细限权让它每次只待在独立的上下文沙箱里修改单文件。 示例:“Use a subagent to migrate @src/utils/math.js into TypeScript. Ensure all types are strictly defined and return the exact refactored file content.”

  • API 文档与注释重度搬砖:项目上线前需要根据几千行控制器(Controller)源码手写精细的 API_DOCUMENT.md工作流:配置一个仅拥有 Read(读源码)和 Edit(写文档)权限的子代理。让它去翻遍业务代码,把入参、出参、异常抛出和注释全部抠出来,规规矩矩地填进 Markdown 模板。 示例:“Use a subagent to scan all controllers in @src/controllers/, extract their query parameters and response schemas, and write a complete API reference to @docs/API_v1.md.”

  • 大规模代码检索、调研与破冰(读文件):在一个完全陌生的庞大开源项目或历史屎山中搜寻某个旧配置的所有调用痕迹、理清模块依赖关系。 工作流:调用一个只拥有 Read, Grep, Glob(无任何写权限与执行权限)的极简只读子代理,让它疯狂 cat 文件并提取核心线索。 示例:“Use a subagent to trace how deprecated_config is passed through the entire repository. Just give me a high-level summary report of affected files and lines.”

也可以定制subagent

.claude/agents/security-reviewer.md

---
name: security-reviewer
description: Reviews code for security vulnerabilities
tools: Read, Grep, Glob, Bash
model: opus
---
You are a senior security engineer. Review code for:
- Injection vulnerabilities (SQL, XSS, command injection)
- Authentication and authorization flaws
- Secrets or credentials in code
- Insecure data handling

Provide specific line references and suggested fixes.

Tell Claude to use subagents explicitly: “Use a subagent to review this code for security issues.”

5. Plan mode and 'AskUserQuestion' tool

在 Claude Code (CLI) 的高效工作流中,Plan Mode(原生计划模式) 与基于 AskUserQuestion 工具的访谈模式是两套相辅相成的“先规划、后动手”机制。前者侧重于代码层面的精密解耦与依赖排查,后者侧重于业务逻辑层面的需求对齐与边缘情况深挖


一、 Native Plan Mode (官方原生计划模式)

1. 适用场景

  • 老项目/复杂代码库维护:在已有大量业务代码的项目中加入新功能,需要确保不破坏现有逻辑。
  • 跨多文件的大型重构:修改核心底层逻辑(如数据库模型、全局中间件),会牵一发而动全身的场景。
  • 强制“只读”代码审查:防止 AI 在没摸清门路时盲目改动文件、反复试错,锁定写权限,让 AI 纯粹充当架构师。

2. 具体场景示例

项目背景:一个基于 Python/Django 的成熟电商项目,需要将现有的 Session 认证机制,无缝重构为 JWT(JSON Web Token)双令牌(Access Token + Refresh Token)认证机制,且不能影响现有前端接口的调用。

3. 实操 Prompt 示例

在终端中进入项目目录并启动 claude,首先输入 /plan(或按下 Shift+Tab)切到计划模式,然后输入以下提示词: Plaintext

/plan
我需要将系统现有的 Session 认证机制全面重构为 JWT 双令牌机制(包含 Access Token 和 Refresh Token 刷新逻辑)。请在 Plan Mode 下深度扫描现有的 `users/models.py`、`users/views.py` 以及 `settings.py` 中的中间件配置。请帮我制定一个详细的重构步骤蓝图,重点排查迁移期间如何保持向下兼容,先不要修改任何代码。

二、 'AskUserQuestion' 访谈模式 (提示词规训模式)

1. 适用场景

  • 新项目从零起步 (Greenfield):项目刚立项,本地没有或极少代码上下文,需要从产品维度理清思路。
  • 业务逻辑极其复杂的全新功能:技术栈很简单,但业务边界、安全漏洞、极端边缘情况(Edge Cases)非常多。
  • 生成技术规格说明书 (SPEC.md):需要产出实实在在的永久项目文档,供人类团队评估或留档。

2. 具体场景示例

项目背景:在系统中添加一个“用户数据一键导出并发送至邮箱”的功能。表面上只是写个 CSV,但背后涉及大文件内存暴涨(OOM)、接口被恶意刷爆、S3 存储越权下载等一连串安全与性能隐患。

3. 实操 Prompt 示例

⚠️ 注意:此模式无需进入 /plan,在 Normal 模式下直接通过下述带有强制工具调用命令的 Prompt 触发: Plaintext

我想构建一个【用户数据异步导出为 CSV 并通过邮件发送给用户】的功能。

请作为资深系统架构师和产品经理对我进行深度访谈。请必须调用 `AskUserQuestion` 工具来向我提问,暂停自动化执行并等待我的回答。不要问那些显而易见的问题,请深挖我可能没有考虑到的硬核难点,包括但不限于:
1. 技术实现(如大文件下的内存优化、异步队列选择)
2. 安全与防刷(如越权下载防御、接口 Rate Limit 限制)
3. UI/UX 异步状态反馈与失败重试补偿

请连续、逐步地面试我,直到我们涵盖了所有隐患。最后,请将所有对齐的细节梳理并完整写入根目录的 `SPEC.md` 文件中。

三、 总结:双剑合璧的终极工作流

在实际的高级开发中,建议将两者结合,形成 “访谈定策略 ➡️ 计划定代码 ➡️ 新 Session 落地” 的三步闭环: 代码段

graph TD
    A[1. 触发 AskUserQuestion 访谈] --> B[产出业务蓝图 SPEC.md]
    B --> C[2. 清空上下文 /clear 并开启 /plan]
    C --> D[结合代码库与 SPEC.md 制定执行计划]
    D --> E[3. 开启全新 Session 完美成码]
  1. 业务对齐:通过 AskUserQuestion 逼迫 Claude 帮你兜底产品和架构漏洞,产出 SPEC.md
  2. 记忆洗牌:使用 /clear 倒空废话,轻装上阵。
  3. 精准手术:开启 /plan 锁死写权限,让 Claude 拿着 SPEC.md 去盘点本地代码,出具行级执行计划,确认无误后一键执行。

6. Manage your session

高效驾驭 Claude Code (CLI) 的核心心法是:及早且频繁地纠偏(Course-correct early and often)。永远不要把 AI 当成一个扔完需求就可以不管的黑盒,而要把他当成一个干劲很足、速度极快,但偶尔会理解错方向的“结对编程”伙伴。


一、 纠偏工具箱:指令与快捷键详解

Claude Code 提供了从“轻量打断”到“时光倒流”的完整工具链,按干预烈度从轻到重排列如下:

1. 紧急刹车:Esc

  • 动作:在 Claude 正在输出代码或调用工具时,直接按下键盘上的 Esc
  • 效果:立即停止手头的自动化动作。
  • 保留什么:当前的聊天上下文(Context)和已经改动的文件状态都会完整保留。
  • 适用场景:看到它打印出来的某一行代码逻辑明显不对,或者它开始误读一个不相关的超大文件。
  • 后续操作:按下 Esc 停住它后,直接输入新的指令(例如:“停,别改这个文件,应该改 services/ 下的那个。”)将其拉回正轨。

2. 撤销文件改动:"Undo that"

  • 动作:在对话框里直接打字输入 "Undo that""Undo the last change"
  • 效果:Claude 会调用底层的 Git 或文件管理机制,撤销上一步对代码文件所做的物理修改。
  • 适用场景:它刚写完一个或多个文件,你扫了一眼发现方向完全错了。
  • 优势:不需要自己去 IDE 里频繁按 Ctrl + Z,一句话让 AI 自己擦干净屁股。

3. 时光倒流:Esc + Esc/rewind

  • 动作:连续按下两次 Esc 键,或者在终端输入 /rewind
  • 效果:打开一个可视化的历史回滚菜单。
  • 深度影响:不仅能撤销代码的物理修改,还能将对话历史(Memory)同时回滚到指定的历史节点。
  • 为什么强大:它彻底抹去了 AI “犯错的记忆”,让时空倒流回它犯错之前的纯净状态,避免后续的生成受到错误上下文的干扰。

二、 终极奥义:记忆净化 (/clear) 与“事不过三”原则

这是在实际开发中最容易被忽略、却最影响产出质量的硬核技巧。

⚠️ 事不过三原则 (The 2-Correction Rule)

如果在同一个问题上,你已经连续纠正了 Claude 2 次以上,它依然没有改对。请立刻停止纠缠!

  • 陷入死胡同的原因:此时上下文里已经充满了:你的第1次纠正 ➡️ 它的第1次失败 ➡️ 你的第2次纠正 ➡️ 它的第2次失败…… 这段充满了错误代码和误导性尝试的上下文,对 AI 产生了极强的负面引力(Context Clutter)。它大概率会在这条死胡同里撞得头破血流。

🚀 正确解法:/clear

  1. 输入 /clear,彻底清空当前 Session 的所有记忆,给 Claude “彻底洗脑”。
  2. 总结前几次失败的教训,把那些导致它走偏的坑,直接作为显性条件写进你的新 Prompt 里。

💡 提示词升级示例:

  • 旧 Prompt:“帮我写个用户注册接口。”(结果它连续两次没用系统原生的加密类,纠正了也不听)
  • 洗脑后的新 Prompt
    /clear
    帮我写个用户注册接口。注意:必须使用 auth.utils 里的 hash_password 函数进行加密,绝对不要自己写哈希逻辑或导入其他库!
    	
    

三. Resume conversations

  • claude code会话内部: /rename ..具体的名字
  • 终端内: claude --continue 自动加载上次对话
  • 终端内: claude --resume 弹出选项选择对话

I skip the Automate and scale part

URL: Claude code 官方教程 "Automate and scale part"

Useful Tips:

  • @ 符号精准引用文件:摆脱低效的复制粘贴。在对话框输入 @ 并跟上文件路径(例如 @src/utils/auth.js),Claude 就会在后台自动读取该文件的最新内容。最适合用于多文件对比重构或精准逻辑审查。
    示例:“参考 @src/templates/OldCard.tsx 的实现模式,帮我重构一下 @src/components/NewCard.tsx 里的部分布局代码。”

  • 终端直接粘贴图片/截图:利用多模态能力解决视觉难题。截图至剪贴板后,在运行 Claude 的终端内按 Ctrl + V(Mac 终端也是 Ctrl + V)或直接将图片文件拖入。终端出现 [Image #1] 标记后即可打字提问。
    示例:“[Image #1] 这是我目前运行项目时的终端截图,跑集成测试的时候弹出了这个报错,可能是什么原因导致的?”

  • 在线 URL 配合 /permissions 白名单:让 AI 自己去查最新的官方文档。直接在对话里丢给它文档链接,为了避免每次访问网络都被弹窗打扰,可以在终端输入 /permissions 命令,将常用的技术域名加入 Allowlist(白名单),此后它就能畅通无阻地联网调取资料。
    示例:“参考 https://docs.github.com/en/rest/issues 里的最新官方 API 说明,帮我用 Python 写一个自动创建和管理 Issue 的脚本。”